
define(function(require, exports, module) {
	"require:nomunge,exports:nomunge,module:nomunge";

	var base = require('component-base');
	
	var isAddHash=true;//是否需要增加hash，当后退时，不需要
	var isChangePage=true;//是否需要后退，当添加时，不需要
	var hisCache=[];

	window.onhashchange=function(){//hash变动就会调用该方法
		if(isChangePage){
			isChangePage=false;
			return;
		}
		var _hash = window.location.hash;
//		console.log("当前"+_hash);
		var h=null;
		if(!_hash){
			//
		}else{
			//
			var preInd = 0;
			for(var i = hisCache.length-1;i>=0;i--){
				//console.log("循环"+hisCache[i][0]);
				if(hisCache[i][0] == _hash){
					preInd = i;
					break;
				}
			}
			if(preInd>=0){
				h = hisCache[preInd];
			}
		}
		if(h){
			//alert(h[0]);//hash
//			console.log("后退到"+h[0]);
			var arg = h[1];
			isAddHash=false;
			arg[1].callee.apply(arg[0],arg[1]);//method.invoke(obj,arg) == div1(arguments)
		}
	}

	exports.addHis = function(t,arg){
		if(!isAddHash){
			isAddHash = true;
			return;
		}
		while(hisCache.length > 10){//保存10个记录，超过10个移除第一个
			hisCache.shift();
		}
		isChangePage=true;
		var _hash = "#"+(new Date()).getTime();
		window.location.hash=_hash;
//		console.log("增加"+_hash);
		hisCache.push([_hash,[t,arg]]);
	}
});